package com.swanclouds.api.managers;

import com.swanclouds.common.RestService;
import com.swanclouds.model.common.ActionResponse;
import com.swanclouds.model.managers.Configuration;
import com.swanclouds.model.managers.Managers;
import com.swanclouds.model.managers.RestoreFactory;
import com.swanclouds.redfish.common.redfish.PowerOnPermit;
import com.swanclouds.redfish.common.redfish.ResetType;
import com.swanclouds.redfish.managers.domain.ManagerModel;

/**
 * Author: 李文强
 * Title: ManagerService
 * Description: TODO
 */
public interface ManagerService extends RestService {
    /**
     *查询特定的管理资源信息
     * @return Managers
     */
    Managers get();

    /**
     * 重启iBMC 只可选择强制重启 ForceRestart
     * @param resetType resetType = ForceRestart
     * @return ActionResponse
     */
    ActionResponse managerReset(ResetType resetType);

    /*
     * 服务器切换iBMC镜像
     * @return ActionResponse
     */
    ActionResponse managerRollBack();

    /**
     * 服务器受控上电
     * @param powerOnPermit on(上电) off(下电)
     * @return ActionResponse
     */
    ActionResponse managerPowerOnPermit(PowerOnPermit powerOnPermit);

    /**
     * 修改管理资源信息
     * @param model 修改管理资源参数
     * @return Managers
     */
    Managers updateManagers(ManagerModel model);


    /**
     * 恢复出厂设置
     * @param restoreFactory 恢复出厂设置参数
     * @return ActionResponse
     */
    ActionResponse restoreFactory(RestoreFactory restoreFactory);

    /**
     * 导入配置文件
     * @param configuration 导入文件路径 类型
     * @return ActionResponse
     */
    ActionResponse importConfiguration(Configuration configuration);

    /**
     * 导出配置文件
     * @param configuration 导出文件路径 类型
     * @return ActionResponse
     */
    ActionResponse exportConfiguration(Configuration configuration);

    /**
     *查询BMC服务信息
     * @return NetworkProtocolService
     */
    NetworkProtocolService NetworkProtocol();

    /**
     *查询BMC网口集合资源信息
     * @return EthernetInterfacesService
     */
    EthernetInterfacesService EthernetInterfaces();

    /**
     *查询虚拟设备集合资源信息
     * @return VirtualMediaService
     */
    VirtualMediaService VirtualMedia();

    /**
     * 服务器查询日志服务信息
     * @return LogService
     */
    LogService LogInformation();

     /*服务器查询安全服务集合资源信息
     * @return SecurityService
     * @description 宁畅服务器找不到资源 目前只有华为可以使用
     */
    SecurityService SecurityService();

    /*
     *华为服务器查询SNMP服务信息
     * @return SnmpService
     * @description 宁畅服务器找不到资源 目前只有华为可以使用
     */
    SnmpService SnmpService();

     /*服务器查询SMTP服务信息
     * @return SmtpService
     * @description 宁畅服务器找不到资源 目前只有华为可以使用
     */
    SmtpService SmtpService();

    /**
     * 查询KVM服务信息集合
     * @return KvmService
     */
    KvmService KvmService();

    /**
     * 查询NTP服务信息集合
     * @return NtpService
     */
    NtpService NtpService();

    /*
     * 查询服务器Syslog资源信息
     * @return SyslogService
     * @description 宁畅服务器找不到资源 目前只有华为可以使用
     */
    SyslogService SyslogService();

    /**
     * 查询LLDP信息
     * @return LldpService
     */
    LldpService LldpService();

    /**
     * 查询诊断服务
     * @return DiagnosticService
     */
    DiagnosticService DiagnosticService();
}
